package com.penghaisoft.microwms.base.web.data.service.impl;

import com.penghaisoft.microwms.base.web.data.service.IMdRegionService;
import com.penghaisoft.microwms.base.web.region.dao.MdRegionMapper;
import com.penghaisoft.microwms.common.Constant;
import com.penghaisoft.microwms.common.data.model.MdRegion;
import com.penghaisoft.microwms.common.dto.Resp;
import com.penghaisoft.microwms.common.page.Pager;
import com.penghaisoft.microwms.common.service.BaseService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description 区域 维护
 * @author luoteng
 * @date 2017年5月24日 下午3:36:18
 * @version 1.0
 */
@Service("mdRegionService")
public class MdRegionServiceImpl extends BaseService implements
		IMdRegionService {
	@Resource
	private MdRegionMapper mdRegionMapper;

	/**
	 * @Title create
	 * @Description 区域 新增
	 * @author luoteng
	 * @date 2017年5月24日 下午3:36:30
	 * @param mdRegion
	 * @return Resp
	 */
	@Override
	public Resp create(MdRegion mdRegion) {
		MdRegion tmp = new MdRegion();
		tmp.setRegionCode(mdRegion.getRegionCode());
		// 查看区域 业务主键 是否唯一
		int count = mdRegionMapper.checkAddUnique(tmp);

		tmp = new MdRegion();
		tmp.setRegionDesc(mdRegion.getRegionDesc());
		int countDesc = mdRegionMapper.checkAddUnique(tmp);
		Resp resp = new Resp();
		resp.setCode(Constant.SUCCESS);
		if (count != 0) {
			resp.setCode(Constant.FAIL);
			resp.setMsg("base.data.region.code.conflict");
			return resp;
		} else if (countDesc != 0) {
			resp.setCode(Constant.FAIL);
			resp.setMsg("base.data.region.desc.conflict");
			return resp;
		} else {
			mdRegionMapper.create(mdRegion);
		}

		return resp;
	}

	/**
	 * @Title delete
	 * @Description 区域 删除
	 * @author luoteng
	 * @date 2017年5月24日 下午3:36:44
	 * @param mdRegion
	 * @return Resp
	 */
	@Override
	public Resp delete(MdRegion mdRegion) {
		mdRegionMapper.delete(mdRegion);
		return success();
	}

	/**
	 * @Title findListByCondition
	 * @Description 区域 查询列表
	 * @author luoteng
	 * @date 2017年5月24日 下午3:36:54
	 * @param page
	 * @param rows
	 * @param condition
	 * @return Pager<MdRegion>
	 */
	@Override
	public Pager<MdRegion> findListByCondition(int page, int rows,
											   MdRegion condition) {
		Pager<MdRegion> pager = new Pager<>();
		pager.setPage(page);
		pager.setRows(rows);
		long size = mdRegionMapper.queryCount(condition);
		List<MdRegion> records = new ArrayList<MdRegion>();
		if(size > 0){
			records = mdRegionMapper.queryList(pager, condition);
		}
		pager.setRecords(records);
		pager.setTotalCount(size);
		return pager;
	}

	/**
	 * @Title findById
	 * @Description 区域 根据主键ID查询
	 * @author luoteng
	 * @date 2017年5月24日 下午3:37:03
	 * @param id
	 * @return MdRegion
	 */
	@Override
	public MdRegion findById(String id) {
		return mdRegionMapper.queryById(id);
	}

	/**
	 * @Title update
	 * @Description 区域 更新
	 * @author luoteng
	 * @date 2017年5月24日 下午3:37:18
	 * @param mdRegion
	 * @return Resp
	 */
	@Override
	public Resp update(MdRegion mdRegion) {
		// 查看区域 业务主键 是否唯一
		int count = mdRegionMapper.checkUpdUnique(mdRegion);
		Resp resp = new Resp();
		resp.setCode(Constant.SUCCESS);
		if (count != 0) {
			resp.setCode(Constant.FAIL);
			resp.setMsg("base.data.region.desc.conflict");
		} else {
			mdRegionMapper.updateBySelect(mdRegion);
		}

		return resp;
		// mdRegion.setGmtModified(new Date());
		// mdRegionMapper.updateBySelect(mdRegion);
		// return success();
	}

	/**
	 * @Title queryMdRegionAll
	 * @Description 查询所有有效的区域信息（区域编码、区域描述） --下拉框用
	 * @author luoteng
	 * @date 2017年5月24日 下午3:37:25
	 * @return List<MdRegion>
	 */
	@Override
	public List<MdRegion> queryMdRegionAll() {
		return mdRegionMapper.queryMdRegionAll();
	}

	/**
	 * @Title queryRegionsUnderWareHouse
	 * @Description 根据 仓库编码 查询区域信息
	 * @author luoteng
	 * @date 2017年5月24日 下午3:37:40
	 * @param condition
	 * @return List<MdRegion>
	 */
	@Override
	public List<MdRegion> queryRegionsUnderWareHouse(MdRegion condition) {
		return mdRegionMapper.queryRegionsUnderWareHouse(condition);
	}

	/** 
	 * @Title queryFromToRegions
	 * @Description 查询区域信息
	 * @author gaofeng
	 * @date 2017年9月1日:下午1:32:51
	 * @param condition
	 * @return
	 */
	@Override
	public List<MdRegion> queryFromToRegions(MdRegion condition) {
		return mdRegionMapper.queryFromToRegions(condition);
	}
	
	@Override
	public List<MdRegion> queryFactory(MdRegion condition) {
		return mdRegionMapper.queryFactory(condition);
	}
	
	@Override
	public List<MdRegion> queryFactory1(MdRegion condition) {
		return mdRegionMapper.queryFactory1(condition);
	}
	
	/** 
	 * @Title queryFactoryAll
	 * @Description 查询当前工厂相关的内裤、外库工厂
	 * @author luoteng
	 * @date 2017年11月7日:下午1:15:10
	 * @param condition
	 * @return List<MdRegion>
	 */
	@Override
	public List<MdRegion> queryFactoryAll(MdRegion condition) {
		return mdRegionMapper.queryFactoryAll(condition);
	}
	
	/** 
	 * @Title queryByAny
	 * @Description 查询所有数据
	 * @author luoteng
	 * @date 2017年11月9日:上午9:59:25
	 * @param condition
	 * @return List<MdRegion>
	 */
	public List<MdRegion> queryByAny(MdRegion condition){
		return mdRegionMapper.queryByAny(condition);
	}

	/** 
	 * @Title queryFactoryAll
	 * @Description 查询当前工厂相关的工厂
	 * @author wangzhiguo
	 * @date 2017年12月5日:下午19:01:10
	 * @param condition
	 * @return List<MdRegion>
	 */
	@Override
	public List<MdRegion> queryWkByCode(MdRegion condition) {
		return mdRegionMapper.queryWkByCode(condition);
	}
}
